home *** CD-ROM | disk | FTP | other *** search
- This collection of QuickBASIC sub-programs is supplied 'as is'. I
- guarantee nothing! I have tested these routines thoroughly and
- they work - to the best of my knowledge. If you find a bug,
- please let me know and I'll correct it as soon as possible.
-
-
- Roy Barrow
- 222 Church Street
- Philadelphia
- PA 19106
-
- BASIC Programmers Bulletin Board System (215) 627-3910
-
- or you can call me on
- (215) 922 2557
-
-
-
- AEBITCLS - SUB PROGRAM
-
- Close an index file. To close an index file, the number of that
- index is passed to the routine. The index file proper is closed,
- the header file is opened and the index data in memory is written
- to the header / control file.
-
- CALLING SEQUENCE & PARAMETER LIST
-
- CALL bit.close(fl%)
-
- WHERE
-
- fl% is the file number of the index.
-
-
-
- AEBITCRE - SUB PROGRAM
-
- This routine asks the questions needed to created an index file.
- This routine is supplied for interest only and is superseded by
- AEBITCRQ. This will not be supported in future releases.
-
- Questions:
-
- name of header file
- length of key
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.creat
-
-
-
-
- AEBITCRQ - SUB PROGRAM
-
- This routine is parameter driven, and serves only to create a NEW
- index file. Existing files should be OPEN'ed with AEBITOPE.
-
- Each index has two files, one is a header file, and the other is
- the index proper. (.HDR and .IDX). The header file contains
- information regarding the structure of the index proper. On
- opening the index, the header file is read into control
- variables, the header is closed, and then the actual index
- opened.
-
- The reverse is accomplished when the index is closed: The index
- closed, the header opened, and the new updated info is written to
- the header file.
-
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.creatq(fl%,flnm$,key.length%)
-
- WHERE
-
- fl% is the index file number
- flnm$ is the eight character index name (mo extension)
- key.length% is an integer between 4 & 255
-
-
- AEBITFIN - SUB PROGRAM
-
- This routine will attempt to find a key matching exactly that of
- the item passed to it. Failing that, it will return the 'closest'
- match. If a close match is returned, this is indicated by a
- negative relative record number for the key.
-
- For programs where 'close' match selection is important, it is
- suggested that you use the Key.Select.Box routine in which a list
- of keys would be displayed and a scroll selection possible. (It
- is quite possible for a user program to use this method to
- traverse the whole index).
-
- I am including the comments that lead into this routine in the
- documenting file. Please note: this will be done throughout this
- document in an effort to cut writing time down, and to make
- things clearer ?
-
- Find a key in the index. If the find was a success, then two
- values are actually returned. Success% holds the pointer to the
- physical position on the index, while mrec% returns the master
- record number. The find actually returns a match directly on the
- key being looked for. If there was no direct match, then ky$ will
- return the match before the return, mrec% will have a minus
- record number value, and success% will return the pointer into
- the index - for the bit.next and bit.prev routines to use.
-
-
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.find(fl%,ky$,mrec%,success%)
-
- WHERE
-
- fl% is the index file number
- ky$ is the key to search the index file for
- mrec% is the record number ind the indexed file
- success% is described above
-
-
-
- AEBITINS - SUB PROGRAM
-
- This will allow a key to be inserted into an index. This routine
- does not check for duplicates. If duplication checking is needed,
- then it's important that you use the FIND routine to see if it's
- there. It's up to an application program to check if the key
- exists. I've done it this way so that you can decide to make an
- index accept duplicate keys or not.
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.ins(fl%,ky$,mrec%,success%)
-
- WHERE
-
- fl% is the index file number
- ky$ is the key to insert into the index file
- mrec% is the master record number passed to bit.ins
- success% is 0 on a failure, 1 if ok
-
-
-
- AEBITKIL - SUB PROGRAM
-
- This delete routine is the most complex of those in the indexing
- package. If it is changed, it should be done so with great care.
- I spent many long hours ensuring that it handled *most*
- eventualities. Please be careful!
-
- This routine is usually the most time consuming. This is the only
- routine that actually 'moves' records around in the file. This
- comes about when you are deleting the master-parent key (record
- 1) and one of the children needs' to be moved. Also, if you
- delete a key in the index and it happens to be the only one
- there, then the routine will truncate the file (making future
- accesses somewhat faster).
-
- A call to FIND should ALWAYS precede DELETE. This will set up
- pointers in memory for DELETE to use.
-
- On return from delete, success% will be zero if the routine
- failed, otherwise success% will equal 1.
-
-
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.kill(fl%,ky$,mrec%,success%)
-
- WHERE
-
- fl% is the index file number
- ky$ is the key to delete into the index file
- mrec% is the master record number passed (from bit.find)
- success% is 0 on a failure, 1 if ok
-
-
-
- AEBITLFT - SUB PROGRAM
-
-
- Bit.left moves the index pointer so that it references the
- smallest key in the tree. This function is to be used to get a
- listing of the tree in sequence. The 'bit.right' routine will
- position the pointer at the other end of the tree for reverse
- listings.
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.left(fl%,ky$,mrec%,success%)
-
- WHERE
-
- fl% is the index file number
- ky$ is the key to delete into the index file
- mrec% is the master record number passed (from bit.find)
- success% is 0 on a failure, 1 if ok
-
-
- AEBITNEX - SUB PROGRAMS
-
- This routine will return the next key in the index from the
- current one. If there are no current values for the key, then a
- negative value will be returned, else a positive value indicating
- the records - master and index - will be returned (or a zero if
- no next key).
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.next(fl%,ky$,mrec%,success%)
-
- WHERE
-
- fl% is the index file number
- ky$ is the key to delete into the index file
- mrec% is the master record number passed (from bit.find)
- success% is 0 on a failure, 1 if ok
-
-
-
-
-
- AEBITOPE - SUB PROGRAM
-
- This is the ONLY way an index file can be opened. This routine
- sets up parameters in memory for subsequent access by other
- routines.
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.open(fl%,hn$)
-
- WHERE
-
- fl% is the index file number
- hn$ is the name of the index (8 ch, excluding extension)
-
-
- AEBITPRV - SUB PROGRAM
-
- This is much the same as the 'next' function except that it
- returns the key previous to the currently selected one. This can
- be usefull for printing a report in reverse sequence.
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.prev(fl%,ky$,mrec%,success%)
-
- WHERE
-
- fl% is the index file number
- ky$ is the key to delete into the index file
- mrec% is the master record number passed (from bit.find)
- success% is 0 on a failure, 1 if ok
-
-
-
- AEBITRGT - SUB PROGRAM
-
- Bit.right moves the index pointer so that it references the
- largest key in the tree. this function is to be used to get a
- listing of the tree in sequence. The 'bit.left' routine will
- position the pointer at the other end of the tree for forward
- listings.
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call bit.right(fl%,ky$,mrec%,success%) static
-
- WHERE
-
- fl% is the index file number
- ky$ is the key to delete into the index file
- mrec% is the master record number passed (from bit.find)
- success% is 0 on a failure, 1 if ok
-
-
-
-
-
- AECOMMON - SUB PROGRAM
-
- These COMMON definitions should be placed right at the start of
- your programs, with the INCLUDE meta command. Refer to page -188-
- of the Microsoft QuickBASIC 2.00 Compiler Guide.
-
-
-
-
- AEGETFLS - SUB PROGRAM
-
- This works in conjunction with the other file accessing routines,
- and returns information regarding the OPEN / CLOSED status of a
- file.
-
-
-
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call Get.File.Status(fl%,rlen%,st%)
-
- WHERE
-
- fl% is the file number
- rlen% is the record length of this file
- st% is the status returned (1=OPEN , 2=CLOSED)
-
-
-
- AEGETREC - SUB PROGRAM
-
- Allocates and returns the next available record in a file. When
- records are deleted, they are pushed on to the top of this stack.
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call Get.Avail.Record (fl%,rlen%,rec%)
-
- WHERE
-
- fl% is the file number
- rlen% is the record length
- rec% is the record number returned
-
-
-
-
- AEINITFL - SUB PROGRAM
-
- This initializes a new file's header record for subsequent access
- with the other record allocation routines.
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call Init.New.File(fl%,rlen%)
-
- WHERE
-
- fl% is the file number
- rlen% is the record length
-
-
-
- AEMRKCLS - SUB PROGRAM
-
- Mark a file as closed (works with the record number allocation
- routines).
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call Mark.File.Closed(fl%,rlen%)
-
- WHERE
-
- fl% is the file number
- rlen% is the record length
-
-
-
- AEMRKOPE - SUB PROGRAM
-
- Mark a file as open (works with the record number allocation
- routines).
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call Mark.File.Open(fl%,rlen%)
-
- WHERE
-
- fl% is the file number
- rlen% is the record length
-
-
-
- AERELREC - SUB PROGRAM
-
- Release an allocated record (delete) using the record allocation
- system.
-
- CALLING SEQUENCE & PARAMETER LIST
-
- call Release.Avail.Record(fl%,rlen%,rec%)
-
- WHERE
-
- fl% is the file number
- rlen% is the record length
- rec% is the record to release
-
-
-
-
- AESHARED - SUB PROGRAM
-
- To be included in all externally compile sub-programs
-
-
-
- IDXTEST4 - PROGRAM
-
- This program is used for testing the indexing routines. It could
- also serve as a demonstration of the use of the routines. It is a
- hastily put together piece of software so is *very* inelegant. To
- use the program, you need to CREATE a file and then OPEN the
- file. You can then use the other accessing routines.
-
-
- NAMES - PROGRAM
-
- Names is a demonstration program of some of the routines in the
- program library. It served initially as demo of the indexing
- routines, but could be an indication of how the menu and dialog
- routines work.
-
-
-
-
-
-
- Version Number 1.1, 15 February, 1987 Page 19
-
-
-
-
-